# 设置CMake的最低版本要求为3.5
cmake_minimum_required(VERSION 3.5)

# 定义项目名称为ZhilinWhiteboard，使用的编程语言为C++
project(ZhilinWhiteboard LANGUAGES CXX)

# 设置当前目录为包含目录，这样CMake会自动将当前目录添加到编译器的包含路径中
set(CMAKE_INCLUDE_CURRENT_DIR ON)

# 开启自动UI处理功能，CMake会自动处理.ui文件生成对应的C++代码
set(CMAKE_AUTOUIC ON)

# 开启自动MOC处理功能，CMake会自动处理Qt的元对象系统，生成对应的C++代码
set(CMAKE_AUTOMOC ON)

# 开启自动RCC处理功能，CMake会自动处理Qt的资源文件，生成对应的C++代码
set(CMAKE_AUTORCC ON)

# 设置C++标准为17
set(CMAKE_CXX_STANDARD 17)
# 要求必须使用指定的C++标准
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 查找Qt5的Widgets、Core和Gui组件，并且要求这些组件必须存在
find_package(Qt5 COMPONENTS Widgets Core Gui REQUIRED)

# 查找Qt5的Network组件，用于屏幕捕获和网络通信，要求该组件必须存在
find_package(Qt5 COMPONENTS Network REQUIRED)

# 定义主应用程序的源文件列表
set(WHITEBOARD_SOURCES
    main.cpp
    mainwindow.cpp
    mainwindow.h
)

# Test application sources
set(TESTER_SOURCES
    TestAppMain.cpp
    TestApp.cpp
    TestApp.h
)

# Main application executable
add_executable(ZhilinWhiteboard ${WHITEBOARD_SOURCES})

target_link_libraries(ZhilinWhiteboard PRIVATE 
    Qt5::Widgets
    Qt5::Core
    Qt5::Gui
    Qt5::Network
)

# Test application executable
add_executable(ZhilinWhiteboardTester ${TESTER_SOURCES})

target_link_libraries(ZhilinWhiteboardTester PRIVATE 
    Qt5::Widgets
    Qt5::Core
    Qt5::Gui
    Qt5::Network
)

# Install the executables
install(TARGETS ZhilinWhiteboard ZhilinWhiteboardTester
    RUNTIME DESTINATION bin
)

